# 创建一个全局变量, 用来存储所有学员的信息  (列表嵌套字典)
students_list = [
    {'name': '小明', 'age': 18, 'stu_id': '001'},
    {'name': '小红', 'age': 19, 'stu_id': '002'}
]


def print_info():
    """展示功能列表"""
    print('-' * 20)
    print('欢迎登录学员管理系统')
    print('1: 添加学员')
    print('2: 删除学员')
    print('3: 修改学员信息')
    print('4: 查询学员信息')
    print('5: 显示所有学员信息')
    print('6: 退出系统')
    print('-' * 20)


def choose_option(option):
    """根据选择的编号,执行不同的功能"""
    if option == '1':
        add_student()
    elif option == '2':
        delete_student()
    elif option == '3':
        modify_student()
    elif option == '4':
        search_student()
    elif option == '5':
        show_all_students()
    elif option == '6':
        program_exit()
    else:
        print('输入信息有误,请重新输入.')


def add_student():
    """添加学员"""
    # 让用户键入要添加学员的学号 (学号不能重复)
    stu_id = input('请输入您要添加学员的学号:')
    # 循环遍历该学员列表,查找学员的学号是否存在
    for student_info in students_list:
        if student_info['stu_id'] == stu_id:
            # 如果能够进入到这里,证明学员已经存在,则输出提示信息后,立即结束程序,因为没必须继续遍历了.
            print('请要添加的学员学号已经存在,请核对后再添加')
            break
    else:
        # 如果学员学号不存在,则提示输入学员的姓名和年龄并保存数据.
        name = input('请输入您要添加学员的姓名:')
        age = input('请输入您要添加学员的年龄:')
        # 在students_list中添加字典
        students_list.append({'name': name, 'age': age, 'stu_id': stu_id})


def delete_student():
    """删除学员"""
    # 让用户输入要删除学员的学号
    stu_id = input('请输入您要删除学员的学号:')
    # 遍历学员列表,查询要删除的学员是否存在
    for student_info in students_list:
        # 要删除的学员存在,则删除该学号所在的字典.
        if student_info['stu_id'] == stu_id:
            # 思考: 从列表中删除该学员使用哪种方法呢?pop ×   remove √
            students_list.remove(student_info)
            # 当找到这个学员后,就没必要继续查找了,所以需要break
            break
    else:
        # 要删除的学员不存在,则提示要删除的学员不存在,请重新输入
        print('您要删除的学员学号不存在,请核对后再删除.')


def modify_student():
    """修改学员信息"""
    # 让用户输入要修改学员的学号
    stu_id = input('请输入您要修改的学员的学号: ')
    # 遍历查找要修改的学员是否存在
    for student_info in students_list:
        # 如果要修改的学员存在,则继续获取姓名和年龄,并修改指定学号的学员信息
        if student_info['stu_id'] == stu_id:
            student_info['name'] = input('请输入您要修改为的姓名:')
            student_info['age'] = input('请输入您要修改为的年龄:')
            break
    else:
        # 如果要修改的学员不存在,则提示该学员不存在请核对后再修改
        print('您要修改的学员学号不存在,请核对后再修改.')

def search_student():
    """查询学员信息"""
    # 让用户输入要查询学员的学号
    stu_id = input('请输入您要查询学员的学号: ')
    # 遍历学生列表,查询该学号学员是否存在
    for student_info in students_list:
        # 该学员存在,则将该学员的信息,打印出来
        if student_info['stu_id'] == stu_id:
            print(f'学员姓名为{student_info["name"]}, 学员的年龄为{student_info["age"]}, 学员的学号为{student_info["stu_id"]}')
            break
    else:
        # 该学员不存在, 则提示该学员不存在,请核对后再查询
        print('您要查找的学员学号不存在,请核对后再查找.')


def show_all_students():
    """显示所有学员信息"""
    # TODO: 1. 遍历所有学员信息
    for student_info in students_list:
        # TODO: 2. 打印学员信息
        print(f'学员姓名为{student_info["name"]}, 学员的年龄为{student_info["age"]}, 学员的学号为{student_info["stu_id"]}')


def program_exit():
    """退出系统"""
    print('退出系统')


while True:
    # 展示功能列表
    print_info()
    # 获取用户输入的功能编号
    option = input('请输入您要执行的功能: (1-6)')
    # 根据功能编号选择要执行的功能
    choose_option(option)

    # 此处临时增加一个学员列表展示代码, 方便查看结果,此代码在所有功能完成后删除
    print(students_list)

    # 根据输入的信息执行功能后进行阻塞,方便查看输出结果
    input()
